using MediatR;
using WMS.Common;
using WMS.Domain;

namespace WMS.Api.Application.Commands
{
    /// <summary>
    /// 获取箱子型号列表命令
    /// </summary>
    public class GetBoxTypeListCommand : IRequest<ApiResult<PagingResult<List<BoxTypeDto>>>>
    {
        /// <summary>
        /// 页码
        /// </summary>
        public int PageIndex { get; set; } = 1;

        /// <summary>
        /// 每页大小
        /// </summary>
        public int PageSize { get; set; } = 10;

        /// <summary>
        /// 型号名称
        /// </summary>
        public string? Name { get; set; }

        /// <summary>
        /// 状态
        /// </summary>
        public int? Status { get; set; }
    }

    /// <summary>
    /// 获取箱子型号详情命令
    /// </summary>
    public class GetBoxTypeByIdCommand : IRequest<ApiResult<BoxTypeDto>>
    {
        /// <summary>
        /// 箱子型号ID
        /// </summary>
        public int Id { get; set; }
    }

    /// <summary>
    /// 创建箱子型号命令
    /// </summary>
    public class CreateBoxTypeCommand : IRequest<ApiResult<int>>
    {
        /// <summary>
        /// 箱子型号DTO
        /// </summary>
        public BoxTypeDto BoxType { get; set; }
    }

    /// <summary>
    /// 更新箱子型号命令
    /// </summary>
    public class UpdateBoxTypeCommand : IRequest<ApiResult<int>>
    {
        /// <summary>
        /// 箱子型号DTO
        /// </summary>
        public BoxTypeDto BoxType { get; set; }
    }

    /// <summary>
    /// 删除箱子型号命令
    /// </summary>
    public class DeleteBoxTypeCommand : IRequest<ApiResult<int>>
    {
        /// <summary>
        /// 箱子型号ID
        /// </summary>
        public int Id { get; set; }
    }

    /// <summary>
    /// 箱子型号DTO
    /// </summary>
    public class BoxTypeDto
    {
        /// <summary>
        /// 箱子型号ID
        /// </summary>
        public int Id { get; set; }

        /// <summary>
        /// 型号名称
        /// </summary>
        public string Name { get; set; } = string.Empty;

        /// <summary>
        /// 长度(厘米)
        /// </summary>
        public decimal Length { get; set; }

        /// <summary>
        /// 宽度(厘米)
        /// </summary>
        public decimal Width { get; set; }

        /// <summary>
        /// 高度(厘米)
        /// </summary>
        public decimal Height { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string? Notes { get; set; }

        /// <summary>
        /// 状态 1-启用 0-禁用
        /// </summary>
        public int Status { get; set; } = 1;
    }
} 